package org.demo;

import org.apache.zookeeper.*;

import java.io.IOException;

/**
 * 发布内容
 *
 * @author yexi
 */
public class SendContent {

    public static void main(String[] args) {

        try {
            // 创建Zookeeper对象
            ZooKeeper zooKeeper = new ZooKeeper(
                    // zookeeper ip地址 + 端口号
                    "localhost:2181",
                    // 访问超时设置(毫秒)
                    10000,
                    // 通过观察者模式发出访问回复。当连接成功后，编写成功信息
                    new Watcher() {
                        public void process(WatchedEvent watchedEvent) {
                            System.out.println("成功获取连接");
                        }
                    }
                    // (在 3.4 中添加)在分区的情况下是否允许创建的客户端进入只读模式。
                    // 只读模式基本上意味着，如果客户端找不到任何majority服务器，但它可以访问partitioned 服务器，它会以只读模式连接到一个服务器，
                    // 即允许读取请求而不允许写入请求。它继续在后台寻求majority。
                    // 默认值为false。
                    , false
            );
            // 向 zookeeper 服务器中发送内容
            String content = zooKeeper.create(
                    // 节点的路径(发送后生成的路径，一般实际发送后会加上0000000000等)。
                    "/demo/children",
                    // 节点的初始数据(存储在上面路径里面的内容)。
                    "这是发送的信息".getBytes(),
                    // 权限
                    ZooDefs.Ids.OPEN_ACL_UNSAFE,
                    // 内容的模式
                    CreateMode.PERSISTENT_SEQUENTIAL
            );

            System.out.println("content = " + content);
        } catch (IOException e) {
            e.printStackTrace();
        } catch (KeeperException e) {
            e.printStackTrace();
        } catch (InterruptedException e) {
            e.printStackTrace();
        }


    }
}
